In modern distributed computing systems, such as cloud computing systems, many different computing tasks (referred to as workloads hereinafter) are aggregated from multiple sources (e.g. tenants, projects, groups and workstations) through computing devices. Likewise, computing resources from multiple computing devices or resource servers can be aggregated or pooled for distribution of available computing resources among workloads.
Resource management systems can manage workloads through the use of schedulers. Schedulers receive workloads from computing devices and assign workloads to computing resources on computing devices or resource servers for execution. Scheduling workloads can be challenging, as available computing resources are limited. In some cases, there are more workloads than there are available resources to run these workloads. Some resource management systems include multiple schedulers which are specialized for different types of workloads, responsible for different types of resources, or to represent different tenants. When more than one scheduler is present in a distributed computing system, conflicts may arise when two schedulers attempt to simultaneously use the same computing resource for a workload. Conflicts between the schedulers' demands can be resolved, and can result in inefficient scheduling, because the unsuccessful scheduler will have to spend additional time attempting to find another computing device or resource server with available resources that can perform the workload. Inefficient scheduling can have a negative effect on performance metrics such as workload throughput, resource utilization rates, and workload runtimes.
As the distributed computing system scales and the volume of workloads increases, workload scheduling itself can become a complicated and time-consuming process. Scheduling workloads efficiently can be challenging, particularly when the total workload approaches or exceeds the computing resources available from computing devices or resource servers. Unfortunately, existing approaches to workload scheduling tend to degrade in efficiency and performance as the number of workloads increases, and the resolution of conflicts between schedulers can become a bottleneck for system performance.